<?php

/**
 * BbPersona form.
 *
 * @package    ingenyo-biblio
 * @subpackage form
 * @author     Your name here
 */
class BbPersonaForm extends BaseBbPersonaForm
{

  public function configure()
  {
    unset($this['fechaBajaPersona'], $this['fotoPath']);
    
    #$this->getValidator('fechaBajaPersona')->setOption('required', false);

    $this->mergeRelation('BbDireccion');

    $this->configureWidgets();
    if ($this->getObject()->getEsdepasaje())
    {
      $this->readOnly();
    }
    $this->setLabels();

  }

  public function readOnly()
  {
    $this->setWidget('NombresPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->setWidget('ApellidoPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->setWidget('nroDocumentoPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->setWidget('CuitPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->setWidget('MailPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->setValidator('MailPersona', new sfValidatorPass(array('required' => false)));
    $this->setWidget('SexoPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    
    $this->setWidget('fechaNacimientoPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    $this->getWidget('fechaNacimientoPersona')->setDefault($this->getObject()->getFechaDeNacimiento());
    $this->setValidator('fechaNacimientoPersona', new mtValidatorDateString(array('required' => false)));
    
    $this->setWidget('estadoCivilPersona', new mtWidgetFormPlain(array('add_hidden_input' => true)));
    
    $this->setWidget('idTipoDocumento', new mtWidgetFormPlain(array('add_hidden_input' => true, 'object'=>  BbtipoDocumentoPeer::removeInstanceFromPool($this->getObject()->getIdtipodocumento()))));

  }

  public function setLabels()
  {
    $this->getWidget('NombresPersona')->setLabel('Nombre');
    $this->getWidget('ApellidoPersona')->setLabel('Apellido');
    $this->getWidget('idTipoDocumento')->setLabel('Tipo documento');
    $this->getWidget('nroDocumentoPersona')->setLabel('Nro documento');
    $this->getWidget('CuitPersona')->setLabel('Cuit');
    $this->getWidget('SexoPersona')->setLabel('Sexo');
    $this->getWidget('fechaNacimientoPersona')->setLabel('fecha nacimiento');
    $this->getWidget('estadoCivilPersona')->setLabel('Estado civil');
    $this->getWidget('MailPersona')->setLabel('Mail');
    $this->getWidget('bb_persona_estado_list')->setLabel('Estado');
    $this->getWidget('bb_persona_tipo_persona_list')->setLabel('Tipo de persona');

  }

  public function configureWidgets()
  {
    parent::configureWidgets();
    $this->getWidget('bb_persona_estado_list')->setOption('multiple', false);
    $choices = array('m' => 'Masculino', 'f' => 'Femenino');
    $this->setWidget('SexoPersona', new sfWidgetFormChoice(array('choices' => $choices)));
    $this->getWidget('SexoPersona')->setOption('renderer_class', 'mbWidgetFormChosenChoice');
    
    $this->setValidator('MailPersona', new sfValidatorEmail(array('required' => true)));
  }

  public function saveBbPersonaTipoPersonaList($con = null)
  {
    if (!$this->getObject()->isNew())
    {
      BbPersonaTipoPersonaPeer::deleteByPersona($this->getObject()->getId());
    }
    $id_tipos_persona = $this->getValue('bb_persona_tipo_persona_list');
    foreach ($id_tipos_persona as $id_tipo_persona)
    {
      $tipo_persona = new BbPersonaTipoPersona();
      $tipo_persona->setIdpersona($this->getObject()->getId());
      $tipo_persona->setIdtipopersona($id_tipo_persona);
      $tipo_persona->save();
    }

  }

}